types .model('Actions', { opened: createModel(Boolean) }) .actions(() => ({ runAction: command => { //delay command so the popup selector can be closed properly setTimeout(() => { command(); }, 300); } }))
types .model('String', { value: types.maybeNull(types.string) }) .actions(self => { return { clear() { self.value = undefined; }, setValue(s) { self.value = s; } }; }) .views(self => ({ get hasValue() { return self.value && self.value.trim() !== ''; } }))
types .model('Project', { id: types.optional(types.identifier, () => uuid.v4()), group: types.maybeNull(types.reference(Group)), generatorList: types.optional(types.array(Generator), []), isWebBased: false, webUrl: '', name: '', path: '', type: '', allItems: types.optional(types.frozen(), []), tabs: types.optional(types.array(Tab), []), ready: true, editingScript: types.optional(types.string, ''), addingScript: createModel(Boolean), //frozen packageJson: types.frozen(), gitConfig: types.frozen(), gitBranch: types.frozen(), contents: types.frozen() })
types .model('Group', { name: '', id: types.optional(types.identifier, () => uuid.v4()) }) .actions(self => ({ setName(name) { self.name = name; } }))
types .model('ScriptsModel', { name: '', description: '',
types .model('SettingsStore', { editor: 'code', projectsPath: types.optional(types.string, homepath),
types .model('ToggleArray', { items: types.optional(types.array(types.string), []) }) .actions(self => ({ toggle: id => { if (self.items.includes(id)) { self.remove(id); } else { self.add(id); } }, remove: id => { self.items = self.items.filter(i => i !== id); }, add: id => { self.items.push(id); }, reset: () => { self.items = []; } }))
types .model('Processes', { list: types.optional(types.array(types.maybeNull(Process)), []), selectedProcess: types.maybeNull(types.safeReference(Process))
types .model('Process', { id: types.optional(types.identifier, () => uuid.v4()), project: types.maybeNull(types.reference(types.late(() => Project))),
types .model('ProjectFilters', { searchText: createModel(String, { value: '' }), hiddenGroups: createModel(ToggleArray), hiddenPrivacyTypes: createModel(ToggleArray), hiddenRepoTypes: createModel(ToggleArray), selectedDependencies: createModel(ToggleArray) }) .actions(self => ({ setSearch: s => { self.searchText = s; }, resetFilters: () => { // self.pickedTags.reset(); // self.pickedDependencies.reset(); } }))
types .model('Boolean', { value: false }) .actions(self => ({ setTrue() { self.value = true; }, setFalse() { self.value = false; }, toggle() { self.value = !self.value; }, setValue(value) { self.value = value; } }))
types .model('Home', { }) .actions(self => ({ }))
types.model("MemberInfo", { ID: types.identifierNumber, FirstName: types.string, LastName: types.string, }).views(self => ({ get fullName() { return `${self.FirstName} ${self.LastName}`; } }))
types.model('Book', { title: types.string, author: types.string, read: false }) .actions(self => ({ toggleRead() { self.read = !self.read } }))
types.model('Book', { title: types.string, author: types.string, read: false }).actions(self => ({ toggleRead() { self.read = !self.read } }))