Fork of https://github.com/modality/charred-black. Short term, has some fixes. Long term, may include a tool to create and edit stock/lifepath/skill/trait data. http://charred.obscuritus.ca:8080/#/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
charred-gold/src/views/partials/stocked.erb

365 lines
18 KiB

<div class='container' ng-controller='StockedCtrl'>
<h1 id='intro'>Stocked</h1>
<div class='well'>
Stocked (Stock&middot;ed)
<br>
<br>
<ol>
<li><i>adj.</i> Furnished with more than enough. <i>(ref https://www.vocabulary.com/dictionary/stocked)</i></li>
<li><i>n.</i> A portmanteau of <i>stock</i> and <i>editor</i>.</li>
</ol>
</div>
<div class='panel panel-default'>
<div class='panel-heading' >
<h4 class='panel-title'>
<a href='' ng-click='collapseBody("#collapse_tools")'>▸</a>
Tools
</h4>
</div>
<div class='panel-collapse collapse in' id='collapse_tools'>
<div class='panel-body'>
<div class='alert alert-danger alert-dismissable' ng-repeat="warn in alertsOfType('tools', 'warn')">
<button aria-hidden='true' class='close' ng-click="removeAlert('tools',warn)" type='button'>&times;</button>
{{warn}}
</div>
<div class='alert alert-success alert-dismissable' ng-repeat="warn in alertsOfType('tools', 'succ')">
<button aria-hidden='true' class='close' ng-click="removeAlert('tools',warn)" type='button'>&times;</button>
{{warn}}
</div>
<div class='container'>
<div class='row'>
<div class='col-md-3'>
<a href='' ng-click='stocked_uploadCharredModel()'>
TODO: Upload charred model
</a>
</div>
<div class='col-md-3'>
<a href='' ng-click='stocked_downloadCharredModel()'>
TODO: Download charred model
</a>
</div>
<div class='col-md-3'>
<a href='' ng-click='stocked_generateMarkdown()'>
TODO: Generate Markdown
</a>
</div>
</div>
</div>
</div>
</div>
<div class='panel-heading'>
<h4 class='panel-title'>
<a href='' ng-click='collapseBody("#collapse_general")'>▸</a>
General
</h4>
</div>
<div class='panel-collapse collapse in' id='collapse_general'>
<div class='panel-body'>
<label for='stock-name'>Name:</label>
<input class='form-control input-lg not-editing editable-name' name='stock-name' id='stock-name'
ng-model="general.Name" ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
<label for='stock-stride'>Stride:</label>
<input type="number" class='not-editing editable-num' name='stock-stride' id='stock-stride'
ng-model="general.Stride" ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
<br />
<div>
<span>Common traits: {{general.CommonTraits.join(", ")}}</span>
<select class='form-control' ng-model='general.selectedTrait' ng-options='t for t in charredTraits'></select>
</div>
<div>
<a href='' ng-click='general.CommonTraits.push(general.selectedTrait)'>Add trait</a>
</div>
<div>
<a href='' ng-click=''>TODO: Add new trait</a>
</div>
<br />
TODO: other things in General section?
</div>
</div>
<div class='panel-heading'>
<h4 class='panel-title'>
<a href='' ng-click='collapseBody("#collapse_settings")'>▸</a>
Settings
</h4>
</div>
<div class='panel-collapse collapse in' id='collapse_settings'>
<div class='panel-body'>
<span class="note-label">Note:</span>
<span class="note-content">
Settings will have " Setting" (or " Subsetting" for subsettings)
appended to the name in the generated charred model, which is how charred will display them.
</span>
<br />
<a ng-click='collapseBody(".collapse_all_settings", $event)' href=''>
collapse/expand all settings
</a>
<div class='list-group'>
<div ng-repeat="setting in settings" class='list-group-item'>
<div class='panel-heading'>
<a href='' class="panel-title" ng-click='collapseBody("#collapse_" + to_id(setting.name))'>▸</a>
<input class='form-control input-lg not-editing editable-name'
ng-model="setting.name" ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
<span class="panel-title" style="font-weight: bold;">
<input type="checkbox" ng-model="setting.isSubsetting" /> Subsetting?
</span>
<a href='' ng-click='removeSetting($index)'>[X]</a>
</div>
<div class='panel-collapse collapse in collapse_all_settings' id='collapse_{{to_id(setting.name)}}'>
<div class='panel-body'>
<div class="panel">
<div class="panel-body">
<a ng-click='collapseBody(".collapse_all_"+to_id(setting.name), $event)' href=''>
collapse/expand all paths in setting
</a>
<div class='container-fluid'>
<div class='row'>
<div class='h4 col-md-3'>Lifepath</div>
<div class='h4 col-md-1'>Time</div>
<div class='h4 col-md-1'>Res</div>
<div class='h4 col-md-3'>Stat</div>
<div class='h4 col-md-4'>Leads</div>
</div>
</div>
</div>
<div ng-repeat="path in setting.lifepaths">
<div class='panel-heading'>
<div class='container-fluid'>
<div class='row'>
<div class="col-md-3">
<a href='' class="panel-title" ng-click='collapseBody("#collapse_" + to_id(path.name))'>▸</a>
<input ng-model="path.name"
class='form-control input-lg not-editing editable-name'
ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
<a href='' ng-click='setting.removeLifepath($index)'>[X]</a>
</div>
<div class="col-md-1">
<input type="number" ng-model="path.time"
class='not-editing editable-num'
ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
<span>yrs</span>
</div>
<div class="col-md-1">
<input type="number" ng-model="path.res"
class='not-editing editable-num'
ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
</div>
<div class="col-md-3">
<label for="{{to_id(path.name)}}_M">M: </label>
<input type="number" ng-model="path.stat.M" id="{{to_id(path.name)}}_M"
class='not-editing editable-num'
ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
<label for="{{to_id(path.name)}}_P">P: </label>
<input type="number" ng-model="path.stat.P" id="{{to_id(path.name)}}_M"
class='not-editing editable-num'
ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
<label for="{{to_id(path.name)}}_PM">P/M: </label>
<input type="number" ng-model="path.stat.PM" id="{{to_id(path.name)}}_M"
class='not-editing editable-num'
ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
</div>
<div class='h5 col-md-4 path-leads'>
<div class="path-leads-read">
<span>Leads: </span><i>{{path.leads().join(", ")}}</i>
<a href='' ng-click='editLeads($event)'>Edit</a>
</div>
<div class="path-leads-write" hidden="hidden">
<div ng-repeat="setting in settings">
<input type="checkbox" id='{{to_id(path.name)}}-to-{{to_id(setting.name)}}'
ng-model='path.leads_dict[setting.name]' value='{{to_id(setting.name)}}' />
<label for='{{to_id(path.name)}}-to-{{to_id(setting.name)}}'>
{{setting.name}}
</label>
</div>
<a href='' ng-click='readLeads($event)'>Done</a>
</div>
</div>
</div>
</div>
</div>
<div class='panel-collapse collapse in collapse_all_{{to_id(setting.name)}}' id='collapse_{{to_id(path.name)}}'>
<div class='panel-body'>
<span ng-if='$first'>TODO: Born/common traits</span>
<div>
<b><i>Skills:</i></b>
<span ng-if='path.skills.lpSkills.length > 0' ng-click='editPoints($event)'>
{{StockedUtil.pluralize(path.skills.lpPoints, "pt")}}:
</span>
<div style="display: inline;" ng-repeat='skill in path.skills.lpSkills track by $index'>
{{skill}}<a href='' ng-click='path.skills.removeSkill($index)'>[X]</a><!--
--><span ng-if='!$last'>,</span></div><!--
--><span ng-if='path.skills.lpSkills.length > 0 && path.skills.generalPoints > 0'>;</span>
<span ng-if='path.skills.generalPoints > 0'>{{StockedUtil.pluralize(path.skills.generalPoints, "pt")}}: General</span>
</div>
<div>
<b><i>Traits:</i></b>
<span ng-if='path.traits.lpTraits.length == 0'>—</span>
<span ng-if='path.traits.lpTraits.length > 0' ng-click='editPoints($event)'>
{{StockedUtil.pluralize(path.traits.points, "pt")}}:
</span>
<div style="display: inline;" ng-repeat='trait in path.traits.lpTraits track by $index'>
{{trait}}<a href='' ng-click='path.traits.removeTrait($index)'>[X]</a><!--
--><span ng-if='!$last'>,</span></div>
</div>
<div ng-if="path.requires" class="horizontal-input-pair">
<label for="{{to_id(path.name)}}-requires"><b><i>Requires: </i></b></label>
<input ng-model="path.requires" id="{{to_id(path.name)}}-requires"
class='form-control not-editing editable-line'
ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
</div>
<div ng-if="path.restrict" class="horizontal-input-pair">
<label for="{{to_id(path.name)}}-restrict"><b><i>Restrictions: </i></b></label>
<input ng-model="path.restrict" id="{{to_id(path.name)}}-restrict"
class='form-control not-editing editable-line'
ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
</div>
<div class="add-skills-traits-container" class="container">
<div class='row'>
<div class='col-md-3'>
<select class='form-control' ng-model='path.selectedSkill' ng-options='s for s in charredSkills'></select>
</div>
<div class='col-md-1'>
<a href='' ng-click='path.skills.addSkill(path.selectedSkill)'>Add skill</a>
</div>
<div class='col-md-2'>
<a href='' ng-click=''>TODO: Add new skill</a>
</div>
<div class='col-md-3'>
<select class='form-control' ng-model='path.selectedTrait' ng-options='t for t in charredTraits'></select>
</div>
<div class='col-md-1'>
<a href='' ng-click='path.traits.addTrait(path.selectedTrait)'>Add trait</a>
</div>
<div class='col-md-2'>
<a href='' ng-click=''>TODO: Add new trait</a>
</div>
</div>
</div>
<span>WISHLIST: requires expression</span>
</div>
</div>
</div>
<div class='panel panel-default'>
<input class='form-control input-lg not-editing editable-name'
name='new-lifepath-name' id='new-lifepath-name'
ng-model="setting.newLifepathName" ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
<a href='' ng-click='setting.addLifepath()'>Add new lifepath</a>
</div>
</div>
</div>
</div>
</div>
<div class='panel panel-default'>
<input class='form-control input-lg not-editing editable-name'
name='new-setting-name' id='new-setting-name'
ng-model="newSettingName" ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
<a href='' ng-click='addSetting()'>Add new setting</a>
</div>
</div>
</div>
</div>
<div class='panel-heading'>
<h4 class='panel-title'>
<a href='' ng-click='collapseBody("#collapse_skills")'>▸</a>
Skills
</h4>
</div>
<div class='panel-collapse collapse in' id='collapse_skills'>
<div class='panel-body'>
<div class='container-fluid'>
<div class='row'>
<div class='h4 col-md-3'>Skill</div>
<div class='h4 col-md-1'>Sorcerous?</div>
<div class='h4 col-md-8'>Roots</div>
<%# <div class='h4 col-md-2'>Stock specific?</div> %>
</div>
</div>
<div ng-repeat='skill in skills' class='row' ng-class-even="'skill-even'" ng-class-odd="'skill-odd'">
<div class='h4 col-md-3'>
<input ng-model="skill.name"
class='form-control input-lg not-editing editable-name'
ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
</div>
<div class='h4 col-md-1'><input type="checkbox" ng-model='skill.magic'></div>
<div class='h4 col-md-8'>
<div class="skill-roots-write">
<span ng-repeat="(root,is) in skill.roots">
<input type="checkbox" id='{{to_id(skill.name)-to_id(root)}}' ng-model='is'/>
<label for='{{to_id(skill.name)-to_id(root)}}'> {{root}} </label>
</div>
</div>
</div>
</div>
<div class='row'>
<div class='h4 col-md-12'><a href='' ng-click='addSkill()'>Add new skill</a></div>
</div>
</div>
</div>
<div class='panel-heading'>
<h4 class='panel-title'>
<a href='' ng-click='collapseBody("#collapse_traits")'>▸</a>
Traits
</h4>
</div>
<div class='panel-collapse collapse in' id='collapse_traits'>
<div class='panel-body'>
<div class='container-fluid'>
<div class='row'>
<div class='h4 col-md-3'>Trait</div>
<div class='h4 col-md-1'>Cost</div>
<div class='h4 col-md-2'>Type</div>
<%# <div class='h4 col-md-2'>Bonus</div> %>
<%# <div class='h4 col-md-2'>Restrictions</div> %>
</div>
</div>
<div ng-repeat='trait in traits' ng-class-even="'trait-even'" ng-class-odd="'trait-odd'">
<div class='row'>
<div class='h4 col-md-3'>
<input ng-model="trait.name"
class='form-control input-lg not-editing editable-name'
ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
</div>
<div class='h4 col-md-1'>
<input type="number" class='not-editing editable-num'
ng-model="trait.cost" ng-click="$event.stopPropagation()"
ng-focus='editField($event, true)' ng-blur='editField($event, false)' />
</div>
<div class='h4 col-md-2'>
<select class='form-control' ng-model='trait.type' ng-options='t for t in TRAIT_TYPES'></select>
</div>
</div>
<%# <div class='h4 col-md-2'>WISHLIST</div> %>
<%# <div class='h4 col-md-2'>WISHLIST</div> %>
<div>
<textarea class='trait-desc' ng-model='trait.desc'></textarea>
</div>
</div>
</div>
</div>