Просмотр исходного кода

rework ThemeRegistry and ViewRegistry

Adam Shaw 8 лет назад
Родитель
Сommit
693657df75
8 измененных файлов с 46 добавлено и 41 удалено
  1. 2 2
      src/Calendar.ts
  2. 8 1
      src/ViewRegistry.ts
  3. 4 4
      src/agenda/config.ts
  4. 5 5
      src/basic/config.ts
  5. 2 1
      src/exports.ts
  6. 6 6
      src/list/config.ts
  7. 15 18
      src/theme/ThemeRegistry.ts
  8. 4 4
      src/theme/config.ts

+ 2 - 2
src/Calendar.ts

@@ -22,7 +22,7 @@ import EventDefParser from './models/event/EventDefParser'
 import SingleEventDef from './models/event/SingleEventDef'
 import SingleEventDef from './models/event/SingleEventDef'
 import EventDefMutation from './models/event/EventDefMutation'
 import EventDefMutation from './models/event/EventDefMutation'
 import EventSource from './models/event-source/EventSource'
 import EventSource from './models/event-source/EventSource'
-import ThemeRegistry from './theme/ThemeRegistry'
+import { getThemeSystemClass } from './theme/ThemeRegistry'
 
 
 
 
 export default class Calendar {
 export default class Calendar {
@@ -352,7 +352,7 @@ export default class Calendar {
 
 
 		// called immediately, and upon option change
 		// called immediately, and upon option change
 		this.optionsManager.watch('settingTheme', [ '?theme', '?themeSystem' ], (opts) => {
 		this.optionsManager.watch('settingTheme', [ '?theme', '?themeSystem' ], (opts) => {
-			var themeClass = ThemeRegistry.getThemeClass(opts.themeSystem || opts.theme);
+			var themeClass = getThemeSystemClass(opts.themeSystem || opts.theme);
 			var theme = new themeClass(this.optionsManager);
 			var theme = new themeClass(this.optionsManager);
 			var widgetClass = theme.getClass('widget');
 			var widgetClass = theme.getClass('widget');
 
 

+ 8 - 1
src/ViewRegistry.ts

@@ -1,8 +1,15 @@
 import * as exportHooks from './exports';
 import * as exportHooks from './exports';
 
 
+
 export const viewHash = {};
 export const viewHash = {};
 (exportHooks as any).views = viewHash;
 (exportHooks as any).views = viewHash;
 
 
-export function register(viewName, viewConfig) {
+
+export function defineView(viewName, viewConfig) {
 	viewHash[viewName] = viewConfig;
 	viewHash[viewName] = viewConfig;
 }
 }
+
+
+export function getViewConfig(viewName) {
+	return viewHash[viewName];
+}

+ 4 - 4
src/agenda/config.ts

@@ -1,7 +1,7 @@
-import { register } from '../ViewRegistry'
+import { defineView } from '../ViewRegistry'
 import AgendaView from './AgendaView'
 import AgendaView from './AgendaView'
 
 
-register('agenda', {
+defineView('agenda', {
 	'class': AgendaView,
 	'class': AgendaView,
 	defaults: {
 	defaults: {
 		allDaySlot: true,
 		allDaySlot: true,
@@ -10,12 +10,12 @@ register('agenda', {
 	}
 	}
 });
 });
 
 
-register('agendaDay', {
+defineView('agendaDay', {
 	type: 'agenda',
 	type: 'agenda',
 	duration: { days: 1 }
 	duration: { days: 1 }
 });
 });
 
 
-register('agendaWeek', {
+defineView('agendaWeek', {
 	type: 'agenda',
 	type: 'agenda',
 	duration: { weeks: 1 }
 	duration: { weeks: 1 }
 });
 });

+ 5 - 5
src/basic/config.ts

@@ -1,22 +1,22 @@
-import { register } from '../ViewRegistry'
+import { defineView } from '../ViewRegistry'
 import BasicView from './BasicView'
 import BasicView from './BasicView'
 import MonthView from './MonthView'
 import MonthView from './MonthView'
 
 
-register('basic', {
+defineView('basic', {
 	'class': BasicView
 	'class': BasicView
 });
 });
 
 
-register('basicDay', {
+defineView('basicDay', {
 	type: 'basic',
 	type: 'basic',
 	duration: { days: 1 }
 	duration: { days: 1 }
 });
 });
 
 
-register('basicWeek', {
+defineView('basicWeek', {
 	type: 'basic',
 	type: 'basic',
 	duration: { weeks: 1 }
 	duration: { weeks: 1 }
 });
 });
 
 
-register('month', {
+defineView('month', {
 	'class': MonthView,
 	'class': MonthView,
 	duration: { months: 1 }, // important for prev/next
 	duration: { months: 1 }, // important for prev/next
 	defaults: {
 	defaults: {

+ 2 - 1
src/exports.ts

@@ -57,7 +57,7 @@ export { default as EventDef } from './models/event/EventDef'
 export { default as EventDefMutation } from './models/event/EventDefMutation'
 export { default as EventDefMutation } from './models/event/EventDefMutation'
 export { default as EventSourceParser } from './models/event-source/EventSourceParser'
 export { default as EventSourceParser } from './models/event-source/EventSourceParser'
 export { default as EventSource } from './models/event-source/EventSource'
 export { default as EventSource } from './models/event-source/EventSource'
-export { default as ThemeRegistry } from './theme/ThemeRegistry'
+export { defineThemeSystem } from './theme/ThemeRegistry'
 export { default as EventInstanceGroup } from './models/event/EventInstanceGroup'
 export { default as EventInstanceGroup } from './models/event/EventInstanceGroup'
 export { default as ArrayEventSource } from './models/event-source/ArrayEventSource'
 export { default as ArrayEventSource } from './models/event-source/ArrayEventSource'
 export { default as FuncEventSource } from './models/event-source/FuncEventSource'
 export { default as FuncEventSource } from './models/event-source/FuncEventSource'
@@ -76,6 +76,7 @@ export { default as DateComponent } from './component/DateComponent'
 export { default as InteractiveDateComponent } from './component/InteractiveDateComponent'
 export { default as InteractiveDateComponent } from './component/InteractiveDateComponent'
 export { default as Calendar } from './Calendar'
 export { default as Calendar } from './Calendar'
 export { default as View } from './View'
 export { default as View } from './View'
+export { defineView, getViewConfig } from './ViewRegistry'
 export { default as DayTableMixin } from './component/DayTableMixin'
 export { default as DayTableMixin } from './component/DayTableMixin'
 export { default as BusinessHourRenderer } from './component/renderers/BusinessHourRenderer'
 export { default as BusinessHourRenderer } from './component/renderers/BusinessHourRenderer'
 export { default as EventRenderer } from './component/renderers/EventRenderer'
 export { default as EventRenderer } from './component/renderers/EventRenderer'

+ 6 - 6
src/list/config.ts

@@ -1,7 +1,7 @@
-import { register } from '../ViewRegistry'
+import { defineView } from '../ViewRegistry'
 import ListView from './ListView'
 import ListView from './ListView'
 
 
-register('list', {
+defineView('list', {
 	'class': ListView,
 	'class': ListView,
 	buttonTextKey: 'list', // what to lookup in locale files
 	buttonTextKey: 'list', // what to lookup in locale files
 	defaults: {
 	defaults: {
@@ -11,7 +11,7 @@ register('list', {
 	}
 	}
 });
 });
 
 
-register('listDay', {
+defineView('listDay', {
 	type: 'list',
 	type: 'list',
 	duration: { days: 1 },
 	duration: { days: 1 },
 	defaults: {
 	defaults: {
@@ -19,7 +19,7 @@ register('listDay', {
 	}
 	}
 });
 });
 
 
-register('listWeek', {
+defineView('listWeek', {
 	type: 'list',
 	type: 'list',
 	duration: { weeks: 1 },
 	duration: { weeks: 1 },
 	defaults: {
 	defaults: {
@@ -28,7 +28,7 @@ register('listWeek', {
 	}
 	}
 });
 });
 
 
-register('listMonth', {
+defineView('listMonth', {
 	type: 'list',
 	type: 'list',
 	duration: { month: 1 },
 	duration: { month: 1 },
 	defaults: {
 	defaults: {
@@ -36,7 +36,7 @@ register('listMonth', {
 	}
 	}
 });
 });
 
 
-register('listYear', {
+defineView('listYear', {
 	type: 'list',
 	type: 'list',
 	duration: { year: 1 },
 	duration: { year: 1 },
 	defaults: {
 	defaults: {

+ 15 - 18
src/theme/ThemeRegistry.ts

@@ -1,26 +1,23 @@
-import StandardTheme from './StandardTheme'
-import JqueryUiTheme from './JqueryUiTheme'
+import StandardTheme from './StandardTheme';
+import JqueryUiTheme from './JqueryUiTheme';
 
 
-export default {
 
 
-	themeClassHash: {},
+const themeClassHash = {} as any;
 
 
 
 
-	register: function(themeName, themeClass) {
-		this.themeClassHash[themeName] = themeClass;
-	},
+export function defineThemeSystem(themeName, themeClass) {
+	themeClassHash[themeName] = themeClass;
+}
 
 
 
 
-	getThemeClass: function(themeSetting) {
-		if (!themeSetting) {
-			return StandardTheme;
-		}
-		else if (themeSetting === true) {
-			return JqueryUiTheme;
-		}
-		else {
-			return this.themeClassHash[themeSetting];
-		}
+export function getThemeSystemClass(themeSetting) {
+	if (!themeSetting) {
+		return StandardTheme;
+	}
+	else if (themeSetting === true) {
+		return JqueryUiTheme;
+	}
+	else {
+		return themeClassHash[themeSetting];
 	}
 	}
-
 }
 }

+ 4 - 4
src/theme/config.ts

@@ -1,10 +1,10 @@
 
 
-import ThemeRegistry from './ThemeRegistry';
+import { defineThemeSystem } from './ThemeRegistry';
 
 
 import StandardTheme from './StandardTheme';
 import StandardTheme from './StandardTheme';
 import JqueryUiTheme from './JqueryUiTheme';
 import JqueryUiTheme from './JqueryUiTheme';
 import BootstrapTheme from './BootstrapTheme';
 import BootstrapTheme from './BootstrapTheme';
 
 
-ThemeRegistry.register('standard', StandardTheme);
-ThemeRegistry.register('jquery-ui', JqueryUiTheme);
-ThemeRegistry.register('bootstrap3', BootstrapTheme);
+defineThemeSystem('standard', StandardTheme);
+defineThemeSystem('jquery-ui', JqueryUiTheme);
+defineThemeSystem('bootstrap3', BootstrapTheme);